name: Chroma Release JS Client

on:
  push:
    tags:
      - 'js_release_*.*.*'  # Match tags in the form js_release_X.Y.Z
      - 'js_release_alpha_*.*.*'  # Match tags in the form js_release_alpha_X.Y.Z

jobs:
  build-and-release:
    runs-on: ubuntu-latest
    permissions: write-all
    steps:
    - name: Check if tag matches the pattern
      run: |
        if [[ "${{ github.ref }}" =~ ^refs/tags/js_release_alpha_[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
          echo "Tag matches the pattern js_release_alpha_X.Y.Z"
          echo "NPM_SCRIPT=release_alpha" >> "$GITHUB_ENV"
        elif [[ "${{ github.ref }}" =~ ^refs/tags/js_release_[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
          echo "Tag matches the pattern js_release_X.Y.Z"
          echo "NPM_SCRIPT=release" >> "$GITHUB_ENV"
        else
          echo "Tag does not match the release tag pattern, exiting workflow"
          exit 1
        fi
    - name: Checkout
      uses: actions/checkout@v3
      with:
        fetch-depth: 0
    - name: Set up JS
      uses: actions/setup-node@v3
      with:
        node-version: '16.x'
        registry-url: 'https://registry.npmjs.org'
    - name: Install Client Dev Dependencies
      run: npm install
      working-directory: ./clients/js/
    - name: npm Test & Publish
      run: npm run db:run && PORT=8001 npm run $NPM_SCRIPT
      working-directory: ./clients/js/
      env:
        NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
